package fachade;

import java.sql.ResultSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import dao.ConceptoDAO;
import dao.ConceptosAdicionalesPorCampaniaDAO;
import dao.PrecioDAO;
import entity.ConceptoBD;
import entity.ConceptosAdicionalesPorCampaniaBD;
import entity.ItemConceptoPorCampaniaBD;
import entity.PrecioBD;
import negocio.Concepto;
import negocio.ConceptoPorCampania;
import negocio.Empresa;
import negocio.NumCorto;
import negocio.Servicio;

public class ConceptosFachade {
	private List<Concepto> conceptosPorCampania;

	public ConceptoPorCampania getConceptoAdicionalporCampaniaId(Integer id_campania) throws Exception {
		
		ConceptoPorCampania conceptoPorCampania = null;
		ConceptosAdicionalesPorCampaniaBD conceptosAdicionalesPorCampaniaBD = new ConceptosAdicionalesPorCampaniaDAO().getConceptosPorCampaniaBYId(id_campania);
		if(conceptosAdicionalesPorCampaniaBD != null)
			conceptoPorCampania = new ConceptoPorCampania(conceptosAdicionalesPorCampaniaBD);
		return conceptoPorCampania;
	}

	public List<Concepto> getConceptosAdicionalesDeCampaniaId(Integer id_campania) throws Exception {
		if (conceptosPorCampania == null)
		{
			conceptosPorCampania = new LinkedList<Concepto>();
			ConceptosAdicionalesPorCampaniaBD conceptosAdicionalesPorCampaniaBD = new ConceptosAdicionalesPorCampaniaDAO().getConceptosPorCampaniaBYId(id_campania);
			if (conceptosAdicionalesPorCampaniaBD != null){ 
				for (Iterator iterator = conceptosAdicionalesPorCampaniaBD.getConceptosPorCampaniaBD().iterator(); iterator
						.hasNext();) {
					if( conceptosPorCampania == null )
						conceptosPorCampania = new LinkedList<Concepto>();
					ItemConceptoPorCampaniaBD itemconceptoBD = (ItemConceptoPorCampaniaBD) iterator.next();
					Concepto concepto = null;
					if( itemconceptoBD.getConceptoBD().getTipo().equalsIgnoreCase("numero_corto") )
						concepto = new NumCorto(itemconceptoBD.getConceptoBD());
					else
						concepto = new Servicio(itemconceptoBD.getConceptoBD());
					conceptosPorCampania.add(concepto);
				}
			}
		}
		return conceptosPorCampania;
	}

	public List<ItemConceptoPorCampaniaBD> getConceptosAdicionalesDeCampaniaByIdCampania(Integer id_campania) {
		//aca esta mal, tengo que buscar los items de concepto campania!!!!
		return new ConceptosAdicionalesPorCampaniaDAO().getConceptosPorCampaniaBYId(id_campania).getConceptosPorCampaniaBD();
	}

	public ConceptoBD getConceptoByID(int idConcepto) {
		return new ConceptoDAO().getConceptoById(idConcepto);
	}

	public PrecioBD getPrecioConceptoById(int id_concepto) {
		return new PrecioDAO().getPrecioByIdConcepto(id_concepto);
	}

	public List<ConceptoBD> getConceptosAdicionalesCliente  (
			Empresa empresaComprobanteEnPantalla) throws Exception{
		// TODO Auto-generated method stub
		
		return new ConceptosAdicionalesPorCampaniaDAO().getConceptosAdicionalesCliente(empresaComprobanteEnPantalla);
	}

}
